8、等差数列

题目 等差数列

image-e8ba9346

思路分析

确定最大项和最小项后 得知公差 就可以算出长度

所以要确定一个最大的合法的公差

即在所有可能的公差里 找一个最大公约数

代码实现

#include<bits/stdc++.h>

using namespace std;

const int N=1e5+10;

int a[N];

int main()

{

  int n;cin>>n;

  for(int i=1;i<=n;i++){

    cin>>a[i];

  }

  sort(a+1,a+n+1);

  int d=0;

  for(int i=1;i<=n;i++){

    d=__gcd(d,a[i]-a[1]);

  }

  if(!d)

    cout<<n;

  else

    cout<<(a[n]-a[1])/d+1;

  return 0;

}

同类题型

视频讲解


⬅️ 7、完全二叉树的权值 🏠 00-刷题理模型 ➡️ 9、后缀表达式